package com.jqq.mybatis.mapper;

import com.jqq.mybatis.pojo.User;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author 姬倩倩
 * @version 1.0
 */
public interface SelectMapper {
    /**
     *若sql语句查询的结果为多条时，一定不能以实体类类型作为方法的返回值
     * 否则会抛出异常TooManyResultsException
     * 若sql语句查询的结果为1条时,可以实体类类型或者list集合作为方法的返回值
     */

    //根据id查询用户信息
    User getUserById(@Param("id") Integer id);

    //查询所有的用户信息
    List<User> getAllUser();

    //查询用户的总数量
    Integer getCount();

    //根据id查询用户信息为map集合
    Map<String, Object> getUserByIdToMap(@Param("id") Integer id);

    /**查询所有用户信息为map集合
     * 1.将mapper接口方法的返回值设置为泛型是map的list集合
     * 2.将每条数据转换的map集合放在一个大的map中，但是必须通过@MapKey注解
     *  将查询的某个字段作为大的map的键
     * @return
     */
//    List<Map<String,Object>> getAllUserToMap();
    @MapKey("id")
    Map<String,Object> getAllUserToMap();

}
